package com.sh.技巧;

/**
 * @Auther: sh
 * @Version 1.0
 * @Description:
 */
public class 颜色分类 {
    public static void main(String[] args) {

    }

    public static void sortColors(int[] nums) {
//        int length = nums.length;
//        int p0 = 0;
//        int p1 = 0;
//        for (int i = 0; i < length; i++) {
//            if (nums[i] == 1) {
//                int temp = nums[i];
//                nums[i] = nums[p1];
//                nums[p1] = temp;
//                p1++;
//            } else if (nums[i] == 0) {
//                int temp = nums[i];
//                nums[i] = nums[p0];
//                nums[p0] = temp;
//                if (p0 < p1) {
//                    temp = nums[i];
//                    nums[i] = nums[p1];
//                    nums[p1] = temp;
//                }
//                ++p0;
//                ++p1;
//            }
//        }

        // 单指针
        int length = nums.length;
        int ptr = 0;
        for (int i = 0; i < length; i++) {
            if (nums[i]==0){
                int temp = nums[i];
                nums[i] = nums[ptr];
                nums[ptr] = temp;
                ptr++;
            }
        }
        for (int i = 0; i < length; i++) {
            if (nums[i]==1){
                int temp = nums[i];
                nums[i] = nums[ptr];
                nums[ptr] = temp;
                ptr++;
            }
        }
    }
}

